package org.scboy.dbms.service.imp;

import java.util.List;

import org.scboy.coobi.sql.factory.EntityFactory;
import org.scboy.dbms.dao.BaseAreaConfigDao;
import org.scboy.dbms.service.BaseAreaConfigService;
import org.scboy.utils.entitys.coobi.Model;
import org.scboy.utils.entitys.coobi.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.hutool.core.util.StrUtil;

/**
 * 
 * 角色业务类
 * @author 杨浩
 *
 */

@Service
public class BaseAreaConfigServiceImp implements BaseAreaConfigService {
	

	@Autowired
	EntityFactory factory;
	
	 /**
	  * 分页查询区域编码映射类别。
	  * @param model 查询参数
	  * @param limit 分页参数
	  * @return
	  */	
	@Override
	public Page page(Model model) {
		
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
		
		return dao.page(model);
	}
    
 	/**
	 * 根据区域编码映射类别主键获取区域编码映射类别。
	 * @param code 主键
	 * @return
	 */
	@Override
	public Model get(String code) {
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
		return dao.get(Model.create().add("code", code));
	}
    
   /**
 	 * 新增区域编码映射类别。
 	 * @param model 参数集合
 	 * @return
 	 */
	@Override
	@Transactional
	public boolean add(Model model) {
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
		if(StrUtil.isEmpty(model.getString("code"))) {
			return false;
		}
		long count=dao.count(Model.create().add("code", model.getString("code")));
		if(count>0) {
			return false;
		}
		int result=dao.insert(model);
		if(result>0){
			return true;
		}else{
			return false;
		}
	}
    
   /**
	 * 更新区域编码映射类别。
	 * @param model 参数集合
	 * @return
	 */	
	@Override
	@Transactional
	public boolean update(Model model) {
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
		if(StrUtil.isEmpty(model.getString("code"))) {
			return false;
		}
		int result=dao.update(model,Model.create().add("code", model.getString("code")));
		if(result>0){
			return true;
		}else{
			return false;
		}
	}
	
   /**
    * 根据主键删除区域编码映射类别。
    * @param code 主键。
    * @return
    */
	@Override
	@Transactional
	public boolean delete(String code) {
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
		int result=dao.delete(Model.create().add("code", code));
		if(result>0){
			return true;
		}else{
			return false;
		}
	}

   /**
    * 获取区域编码映射类别集合。
    * @param model 参数集合
    * @return
    */
	@Override
	public List<Model> list(Model model) {
		BaseAreaConfigDao dao=factory.getDao(BaseAreaConfigDao.class);
        return dao.select(model);
      
	}

}
